package com.course.controller;

import com.common.domain.pojo.Result;
import com.course.domain.pojo.CourseTag;
import com.course.domain.vo.TreeCourseTagsVo;
import com.course.service.ICourseTagService;
import io.swagger.annotations.ApiOperation;
import jakarta.annotation.Resource;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/api/course/tag")
public class CourseTagController {

    @Resource
    ICourseTagService iCourseTagService;

    // 获取标签列表（树形结构）
    @GetMapping("/list")
    @ApiOperation("获取标签列表（树形结构）")
    public Result<List<TreeCourseTagsVo>> getTagList(){
        List<TreeCourseTagsVo> list = iCourseTagService.getCourseTagsAsTree();
        return Result.success(list);
    }

    // 获取所有标签列表（扁平结构）
    @GetMapping("/all")
    @ApiOperation("获取所有标签列表（扁平结构）")
    public Result<List<CourseTag>> getAllTags(){
        List<CourseTag> list = iCourseTagService.list();
        return Result.success(list);
    }

    // 新增标签（只需要传递标签名称和父级ID）
    @PostMapping("/add")
    @ApiOperation("新增标签")
    public Result<Boolean> addTag(@RequestBody CourseTag courseTag) {
        boolean result = iCourseTagService.save(courseTag);
        return Result.success(result);
    }

    // 更新标签（只需要传递标签ID和名称）
    @PostMapping("/update")
    @ApiOperation("更新标签")
    public Result<Boolean> updateTag(@RequestBody CourseTag courseTag) {
        boolean result = iCourseTagService.updateById(courseTag);
        return Result.success(result);
    }

    // 删除标签
    @PostMapping("/delete/{id}")
    @ApiOperation("删除标签")
    public Result<Boolean> deleteTag(@PathVariable Long id) {
        boolean result = iCourseTagService.deleteTagById(id);
        return Result.success(result);
    }

    // 根据ID获取标签详情
    @GetMapping("/detail/{id}")
    @ApiOperation("根据ID获取标签详情")
    public Result<CourseTag> getTagById(@PathVariable Long id) {
        CourseTag tag = iCourseTagService.getById(id);
        return Result.success(tag);
    }
}
